<?php

class Skjb_Search_Xapian_Query
{
    public $_cPtr = null;

    const OP_AND = 0;

    const OP_OR = Query_OP_OR;

    const OP_AND_NOT = Query_OP_AND_NOT;

    const OP_XOR = Query_OP_XOR;

    const OP_AND_MAYBE = Query_OP_AND_MAYBE;

    const OP_FILTER = Query_OP_FILTER;

    const OP_NEAR = Query_OP_NEAR;

    const OP_PHRASE = Query_OP_PHRASE;

    const OP_VALUE_RANGE = Query_OP_VALUE_RANGE;

    const OP_SCALE_WEIGHT = Query_OP_SCALE_WEIGHT;

    const OP_ELITE_SET = 10;

    const OP_VALUE_GE = Query_OP_VALUE_GE;

    const OP_VALUE_LE = Query_OP_VALUE_LE;

    function __construct($tname_or_op__or_copyme_or_op = null, $wqf_or_left_or_valno_or_subqs_or_q = null, $term_pos_or_right_or_begin_or_value_or_param_or_parameter = null, $end = null) {
        switch (func_num_args()) {
        case 0: $r=new_Query(); break;
        case 1: $r=new_Query($tname_or_op__or_copyme_or_op); break;
        case 2: $r=new_Query($tname_or_op__or_copyme_or_op,$wqf_or_left_or_valno_or_subqs_or_q); break;
        case 3: $r=new_Query($tname_or_op__or_copyme_or_op,$wqf_or_left_or_valno_or_subqs_or_q,$term_pos_or_right_or_begin_or_value_or_param_or_parameter); break;
        default: $r=new_Query($tname_or_op__or_copyme_or_op,$wqf_or_left_or_valno_or_subqs_or_q,$term_pos_or_right_or_begin_or_value_or_param_or_parameter,$end);
        }
        $this->_cPtr=$r;
    }

    function get_length() {
        return Query_get_length($this->_cPtr);
    }

    function get_terms_begin() {
        $r=Query_get_terms_begin($this->_cPtr);
        return is_resource($r) ? new Skjb_Search_Xapian_TermIterator($r) : $r;
    }

    function get_terms_end() {
        $r=Query_get_terms_end($this->_cPtr);
        return is_resource($r) ? new Skjb_Search_Xapian_TermIterator($r) : $r;
    }

    function is_empty() {
        return Query_is_empty($this->_cPtr);
    }

    function get_description() {
        return Query_get_description($this->_cPtr);
    }
}